import java.util.Arrays;

public class LeetCode242 {
    public boolean isAnagram(String s, String t) {
        // 调用辅助方法 getKeys 来获取两个字符串的字符频率数组，
        // 并使用 Arrays.equals 方法比较这两个数组是否相等。
        return Arrays.equals(getKeys(s), getKeys(t));
    }

    /**
     * 获取给定字符串的字符频率数组。
     *
     * @param s 输入字符串
     * @return 一个长度为26的整数数组，表示'a'到'z'这26个字母在字符串中的出现次数。
     */
    private int[] getKeys(String s) {
        // 创建一个长度为26的整型数组，用于存储每个字母的出现次数
        int[] arr = new int[26];

        // 将字符串转换为字符数组
        char[] chars = s.toCharArray();

        // 遍历字符数组，更新对应位置的计数器
        for (char ch : chars) {
            // 'a' 的 ASCII 值是 97，所以这里减去 97 是为了将字符映射到数组索引0-25
            // 这样 'a' 映射到索引0, 'b' 映射到索引1, 以此类推...
            arr[ch - 'a']++; // 使用更直观的 'ch - 'a'' 代替 'ch - 97'
        }

        // 返回字符频率数组
        return arr;
    }
}
